Appearance
各配置项的执行顺序
本节目标:理解“各配置项的执行顺序”的核心思路,并能把它用于实际开发或面试表达。 Vue 配置项和生命周期钩子的执行顺序
- 初始化 props:
- 执行 props 配置项中的数据验证和默认值处理。
- 在此阶段,组件实例还未生成,只是对传入的 props 进行处理。
- 创建组件实例:
- 创建组件实例,此时会调用 beforeCreate 生命周期钩子。
- 初始化组件数据:
- 执行 data 配置项中的函数或对象,将返回值与组件实例的数据进行合并,生成组件实例的响应式数据。
- 执行生命周期钩子 created:
- 执行 created 钩子函数,此时可以访问组件实例的数据和方法,但 DOM 还未生成。
- 初始化 computed:
- 执行 computed 配置项中的函数,生成计算属性,并将其定义为组件实例的响应式数据。
- 初始化 watch:
- 执行 watch 配置项中的函数,生成观察者,并将其订阅到组件实例的响应式数据上,监听数据的变化。
- 执行生命周期钩子 beforeMount:
- 在挂载开始之前调用 beforeMount 钩子,此时模板已经编译完毕,但还未挂载到 DOM 上。
- 挂载组件:
- 将编译后的模板挂载到 DOM 上,执行 mounted 钩子函数,此时可以进行 DOM 操作。
当组件实例的响应式数据发生变化时
- 响应式更新:
- 当组件实例的响应式数据发生变化时,依赖此数据的 watcher 会被触发,更新 DOM 并执行相应的回调函数。
执行顺序总结
- 初始化 props
- 创建组件实例:调用 beforeCreate
- 初始化 data
- 调用 created
- 初始化 computed
- 初始化 watch
- 调用 beforeMount
- 挂载组件:调用 mounted
细节说明
- beforeCreate:此时无法访问 data 和 props。
- created:可以访问 data 和 props,但 DOM 未生成。
- beforeMount:模板已编译完毕,但未挂载到 DOM 上。
- mounted:DOM 已挂载,可以进行 DOM 操作。
应用实例 在实际应用中,根据不同的生命周期钩子,可以执行不同的操作:
- beforeCreate:很少使用,通常用于全局混入或插件的初始化。
- created:可以进行初始化数据的获取、事件监听的设置等。
- beforeMount:很少使用,可以在此处修改数据以影响初次渲染。
- mounted:通常用于获取或操作 DOM 元素。
- beforeUpdate:数据更新之前可以在此处执行操作,如手动修改状态。
- updated:数据更新之后,可以操作更新后的 DOM 元素。
- beforeDestroy:执行清理任务,如清除定时器、事件监听器。
- destroyed:实例销毁后,进行清理操作,如解除绑定、清理内存等。
这个调整后的顺序和解释应该能更准确地描述 Vue 配置项和生命周期钩子的执行顺序。
